package fr.ydelouis.selfoss.view; import android.content.Context; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.text.format.DateUtils; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EViewGroup; import org.androidannotations.annotations.ViewById; import java.util.List; import fr.ydelouis.selfoss.R; import fr.ydelouis.selfoss.entity.Article; import fr.ydelouis.selfoss.entity.Tag; import fr.ydelouis.selfoss.util.SelfossImageLoader; @EViewGroup(R.layout.view_article) public class ArticleView extends RelativeLayout { @Bean protected SelfossImageLoader imageLoader; private Article article; @ViewById protected View background; @ViewById protected ImageView image; @ViewById protected ImageView favicon; @ViewById protected TextView letter; @ViewById protected TextView sourceTitle; @ViewById protected TextView dateTime; @ViewById protected TextView title; public ArticleView(Context context) { super(context); } public ArticleView(Context context, AttributeSet attrs) { super(context, attrs); } public ArticleView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void bind(Article article, List<Tag> tags) { if (!article.equals(this.article)) { setImage(article); } setFaviconOrLetter(article, tags); sourceTitle.setText(article.getSourceTitle()); dateTime.setText(DateUtils.getRelativeTimeSpanString(getContext(), article.getDateTime())); title.setText(article.getTitle()); setUnread(article.isUnread()); setStarred(article.isStarred()); this.article = article; } private void setImage(Article article) { if (article.hasImage()) { image.setVisibility(VISIBLE); image.setImageBitmap(null); imageLoader.displayImage(article, image); } else { image.setVisibility(GONE); } } private void setFaviconOrLetter(Article article, List<Tag> tags) { favicon.setVisibility(GONE); letter.setVisibility(GONE); if (article.hasIcon()) { imageLoader.displayFavicon(article, favicon); favicon.setVisibility(View.VISIBLE); } else if (article.getSourceTitle() != null && !article.getSourceTitle().isEmpty() && tags != null && !tags.isEmpty()) { letter.setText(article.getSourceTitle().substring(0, 1).toUpperCase()); letter.setBackgroundDrawable(new ColorsOvalDrawable(Tag.colorsOfTags(tags))); letter.setVisibility(VISIBLE); } } private void setUnread(boolean unread) { int colorId = unread ? R.color.text : R.color.text_secondary ; int color = getResources().getColor(colorId); title.setTextColor(color); sourceTitle.setTextColor(color); dateTime.setTextColor(color); ColorMatrix matrix = new ColorMatrix(); matrix.setSaturation(.1f); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); image.setColorFilter(unread ? null : filter); } private void setStarred(boolean isStarred) { background.setBackgroundResource(isStarred ? R.drawable.bg_card_activable_starred : R.drawable.bg_card_activable); } }